package com.tian.service;

import com.tian.dto.UserApplyListReqDto;
import com.tian.dto.UserApplyListRespDto;
import com.tian.dto.UserApplyRespDto;
import com.tian.utils.CommonResult;

import java.math.BigDecimal;

/**
 * @author tianwc 公众号：java后端技术全栈、面试专栏
 * @version 1.0.0
 * @date 2023年09月18日 10:38
 * 在线刷题 1200+题和1000+篇干货文章：<a href="https://woaijava.cc/">博客地址</a>
 * <p>
 * 用户贷款额度申请
 */
public interface UserApplyDubboService {
    /**
     * 用户发起贷款申请
     *
     * @param mainId 用户主表id
     * @return 申请成功与否
     */
    CommonResult apply(Long mainId);

    /**
     * 通过用户主表id查询用户申请额度以及申请情况
     *
     * @param mainId 用户主表Id
     * @return 用户贷款额度以及申请情况
     */
    CommonResult<UserApplyRespDto> getByMainId(Long mainId);

    /**
     * 额度申请审批
     * (供管理项目使用，贷款额度审批人使用)
     *
     * @param userApplyId 额度申请id
     * @param status      申请情况
     * @param limit       贷款额度
     * @return 申请成功与否
     */
    CommonResult approve(Long userApplyId, Integer status, BigDecimal limit);

    /**
     * 根据状态对额度申请列表进行分页查询
     *
     * @param userApplyListReqDto 请求参数
     * @return 额度申请列表
     */
    CommonResult<UserApplyListRespDto> list(UserApplyListReqDto userApplyListReqDto);

}
